package final_wearebatman_model;

//generátor osztálya
public class Generator implements IhasOutput {

    private Output output;
    private Wire wire;
    private String name;
    private String data;
    private int actual_bit;

    //konstruktor
    public Generator(String name) {
        this.output = new Output();
        this.name = name;
        this.data = "10";
    }

    //a működés megvalósítása
    public void operate() {
        char d = (data.charAt((actual_bit++) % data.length()));
        this.output.setData(d == '0' ? 0 : 1);      
        this.wire.operate();
    }

    //getter az outputra
    public int getOutputData(int pin) {
        return this.output.getData();
    }

    //setter az outputra
    public void setOutputData(int pin, int data) {
        this.output.setData(data);
    }

    //vezeték outputjának összekötése
    public void connectWireOutput(int pin, Wire wire) {
        this.wire = wire;
    }

    //név lekérése
    public String getName() {
        return this.name;
    }

    //generátor stringjének lekérése
    public String getData() {
        return this.data;
    }

    //generátor stringjének beállítása
    public void setData(String data) {
        this.data = data;        
    }

    //számláló nullázása
    public void resetCounter() {        
    }


    //végső működés utáni állapot lekérése
    public String getFinalState() {
        return Integer.toString(this.output.getData());
    }
}
